<?php
/**
* TestGuest version1.0
*===================================
* Copy 2012-2016 yc60
* Web:http://www.yc60.com
*===================================
* Author:Pan
* Date:2016-12-20
*
*/

  //防止恶意调用
  if(!defined('IN_TG')){
  	exit("Access Defined");
  }

  //2.1先执行这里，判断函数是否存在
  if(!function_exists('_alert_back')){
  	  exit('_alert_back()函数不存在,请检查!');
  }

/**
*   _check_username 表示检测并过滤用户名
*   @access public
*   @param  string $_string 表示收污染的用户名
*   @param int $_min_num 表示最小长度
*   @param int $_max_num 表示最大长度
*   @return $string  表示过滤后的用户名 
*/
function _check_username($_string,$_min_num,$_max_num){
	//1.去掉两边的空格
	$_string = trim($_string);
	//2.判断字符串长度不得小于2位或者大于20位
	
//2.2再执行这里，判断字符串长度
	if(mb_strlen($_string,'utf-8')<$_min_num || mb_strlen($_string,'utf-8')>$_max_num){
		_alert_back('字符串长度不得小于'.$_min_num.'位或者大于'.$_max_num.'位');
	}
	//3.限制敏感字符
	$_char_pattern = "/[<>\'\"\ \　 ]/";
	if(preg_match($_char_pattern, $_string)){
		_alert_back('用户名不得包敏感字符');
	}

	//4.限制敏感用户名
	$_mg[0] = '潘莹';
	$_mg[1] = '邓庭之';
	$_mg[2] = '胖小人';

    foreach($_mg as $value){
    	$_mg_string .= '['.$value.']'.'\n';
    }

    if(in_array($_string,$_mg)){
    	_alert_back($_mg_string.'以上敏感用户名不得注册');
    }

    //转义输入，有效防止SQL注入问题
    return mysql_real_escape_string($_string);
}


/**
*   _check_password 验证密码
*   @access public
*   @param  string $_first_pass 密码
*   @param  string $_end_pass  确认密码
*   @param int $_min_num 表示最小长度
*   @return  string $_first_pass 返回加密后的密码
*/
function _check_password($_first_pass,$_end_pass,$_min_num){
    //判断密码
    if(strlen($_first_pass)<$_min_num){
    	_alert_back('用户密码不得小于'.$_min_num.'位');
    }
    //密码和确认密码必须一致
    if($_first_pass != $_end_pass){
    	_alert_back('用户密码和确认密码不一致');
    }

    //返回密码
    return sha1($_first_pass);

}

/**
*   _check_question 密码提示
*   @access public
*   @param int $_min_num 表示最小长度
*   @param int $_max_num 表示最小长度
*   @return $_question  表示返回密码提示
*/
function _check_question($_question,$_min_num,$_max_num){
    //判断密码提示
    if(mb_strlen($_question)<$_min_num || mb_strlen($_question)>$_max_num){
    	_alert_back('密码提示不得小于'.$_min_num.'位或者大于'.$_max_num.'位');
    }

    //返回密码提示
    return mysql_real_escape_string($_question);//将结果转义后再返回
}


/**
*   _check_answer 密码回答
*   @access public
*   @param int $_min_num 表示最小长度
*   @param int $_max_num 表示最小长度
*   @return $_answer  表示返回密码回答
*/
function _check_answer($_question,$_answer,$_min_num,$_max_num){
    //判断密码提示
    if(mb_strlen($_answer,'utf-8')<$_min_num || mb_strlen($_answer,'utf-8')>$_max_num){
    	_alert_back('密码提示不得小于'.$_min_num.'位或者大于'.$_max_num.'位');
    }

    //密码提示和密码回答不能相同
    if($_question == $_answer){
    	_alert_back('密码提示和密码回答不能相同');
    }
    //加密返回
    return sha1($_answer);
}


/*可选验证（邮箱、QQ、网址）*/
/**
*   _check_email 检验邮箱是否合法
*   @access public
*   @return $_email 表示返回邮箱信息
*/
function _check_email($_email){
    if(empty($_email)){
        return null;
    }else{
    //^以什么开头   $以什么结尾  +表示一次或者多次
       if(!preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/',$_email)){
        _alert_back('邮件格式错误，请重新输入...');
       }
    }
    return $_email;

}

/**
*   _check_qq 检验QQ信息是否合法
*   @access public
*   @return $_qq 表示返回QQ信息
*/
function _check_qq($_qq){
    if(empty($_qq)){
        return null;
    }else{
        if(!preg_match('/^[1-9]{1}[0-9]{4,9}$/',$_qq)){
            _alert_back('QQ格式错误，请重新输入...');
        }
     }
    return $_qq;
}


/**
*   _check_qq 检验网址是否合法
*   @access public
*   @return $_url 表示返回网址
*/
function _check_url($_url){
    if(empty($_url) || ($_url == 'http://')){
        return null;
    }else{
        //?表示0次或者一次
        if(!preg_match('/^https?:\/\/(\w+\.)?[\w\-\.]+(\.\w+)+$/',$_url)){
            _alert_back('网址错误，请重新输入...');
        }
     }
    return $_url;
}









































